/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.conasinf.sofia.controller;

import com.conasinf.sofia.model.dao.Impl.TurnosDAOImpl;
import com.conasinf.sofia.model.dao.TurnosDAO;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import com.conasinf.sofia.model.TTurnos;
import javax.faces.model.SelectItem;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

/**
 *
 * @author jfgomez
 */
@ManagedBean
@SessionScoped
public class TurnosBean implements Serializable {

    //Variable lista que es una lista de tipo TTurnos segun el modelo
    //Variable objSelect que es un objeto del tipo TTurnos que recibira el objeto seleccionado en la vista
    private List<TTurnos> lista;
    private List<SelectItem> objListSelect;
    private TTurnos objSeleccionado = new TTurnos();

    //Inicializa la lista al instanciar la clase    
    public TurnosBean() {
        
        this.lista = new ArrayList<TTurnos>();
        this.objSeleccionado = new TTurnos();
    }

    /**
     * insert() * inserta un nuevo registro en la base de datos crea un nuevo
     * objeto de tipo DAOImpl asigna id en cero para no enviar nulos a la base
     * de datos asigna el usuario que esta trabajando en sesion
     *
     * @author jfgomez
     * @param actionEvent
     */
    public void insert(ActionEvent actionEvent) {
        TurnosDAO consulta = new TurnosDAOImpl();
        this.objSeleccionado.setId(0);
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        this.objSeleccionado.setUsuario(user.getUsername());
        consulta.save(this.objSeleccionado);
    }

    /**
     * update() * actualiza el registtro seleccionado en la base de datos crea
     * un nuevo objeto de tipo DAOImpl asigna el usuario que esta trabajando en
     * sesion
     *
     * @author jfgomez
     * @param actionEvent
     */
    public void update(ActionEvent actionEvent) {
        TurnosDAO consulta = new TurnosDAOImpl();
        this.objSeleccionado.setUsuario("jfgomez");
        consulta.update(this.objSeleccionado);
    }

    /**
     * getLista() * entrega una lista de objetos segun la consulta enviada Crea
     * un nuevo objeto de tipo DAOImpl
     *
     * @author jfgomez
     */
    public List<TTurnos> getLista() {
        TurnosDAO consulta = new TurnosDAOImpl();
        return consulta.findAll("from TTurnos Order by Turno");
    }

    public void setLista(List<TTurnos> lista) {
        this.lista = lista;
    }

    public TTurnos getObjSeleccionado() {
        return objSeleccionado;
    }

    public void setObjSeleccionado(TTurnos objSeleccionado) {
        this.objSeleccionado = objSeleccionado;
    }

    public List<SelectItem> getObjListSelect() {
        this.objListSelect = new ArrayList<SelectItem>();
        TurnosDAO consulta = new TurnosDAOImpl();
        List<TTurnos> tds = consulta.findAll("from TTurnos Order By turno");
        for (TTurnos td : tds) {
            SelectItem selectItem = new SelectItem(td.getId(), td.getTurno());
            this.objListSelect.add(selectItem);
        }
        return objListSelect;
    }

}
